package mid

/*
给你一个字符串 s ，你需要将它分割成一个或者更多的 平衡 子字符串。比方说，s == "ababcc" 那么 ("abab", "c", "c") ，("ab", "abc", "c")
和 ("ababcc") 都是合法分割，但是 ("a", "bab", "cc") ，("aba", "bc", "c") 和 ("ab", "abcc") 不是，不平衡的子字符串用粗体表示。
请你返回 s 最少 能分割成多少个平衡子字符串。
注意：一个 平衡 字符串指的是字符串中所有字符出现的次数都相同。
*/
func minimumSubstringsInPartition(s string) int {
	m := make(map[byte]int)
	res := 0
	maxL := -1
	for i := range s {
		if v, ok := m[s[i]]; ok {
			v += 1
			if v > maxL {
				m = make(map[byte]int)
				m[s[i]] = 1
				res++
				continue
			}
			maxL = v
			m[s[i]] = v
		}
		m[s[i]] = 1
	}
	return res
}
